<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>OpenShoe: usb_protocol.h Source File</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenShoe
   &#160;<span id="projectnumber">0.1</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<div class="title">usb_protocol.h</div>  </div>
</div>
<div class="contents">
<a href="usb__protocol_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
<a name="l00042"></a>00042 <span class="preprocessor">#ifndef _USB_PROTOCOL_H_</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define _USB_PROTOCOL_H_</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span>
<a name="l00045"></a>00045 <span class="preprocessor">#include &quot;<a class="code" href="usb__atmel_8h.html" title="All USB VIDs and PIDs from Atmel AVR applications.">usb_atmel.h</a>&quot;</span>
<a name="l00046"></a>00046 
<a name="l00057"></a>00057 
<a name="l00058"></a><a class="code" href="group__usb__protocol__group.html#ga9bccec980a4f41a481b389b4f0c9c690">00058</a> <span class="preprocessor">#define  USB_V2_0    0x0200     //!&lt; USB Specification version 2.00</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span>
<a name="l00062"></a>00062 
<a name="l00063"></a><a class="code" href="group__usb__protocol__group.html#ga6ce548e51895ce0226ee145753a9c815">00063</a> <span class="preprocessor">#define  NO_CLASS                0x00</span>
<a name="l00064"></a><a class="code" href="group__usb__protocol__group.html#gaac34c41004ffdf924a770974fd4152d7">00064</a> <span class="preprocessor"></span><span class="preprocessor">#define  NO_SUBCLASS             0x00</span>
<a name="l00065"></a><a class="code" href="group__usb__protocol__group.html#gaa5e6e8476d28aa6869786f87751144d0">00065</a> <span class="preprocessor"></span><span class="preprocessor">#define  NO_PROTOCOL             0x00</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span>
<a name="l00067"></a>00067 
<a name="l00070"></a><a class="code" href="group__usb__protocol__group.html#gae8971589b19dfa71052d651617324566">00070</a> <span class="preprocessor">#define  CLASS_IAD               0xEF</span>
<a name="l00071"></a><a class="code" href="group__usb__protocol__group.html#gaa4e56ac456064b641e2a3a58ea5a4ed3">00071</a> <span class="preprocessor"></span><span class="preprocessor">#define  SUB_CLASS_IAD           0x02</span>
<a name="l00072"></a><a class="code" href="group__usb__protocol__group.html#ga8e85bf6a9a6702c71c68dbc5c4164b9f">00072</a> <span class="preprocessor"></span><span class="preprocessor">#define  PROTOCOL_IAD            0x01</span>
<a name="l00073"></a>00073 <span class="preprocessor"></span>
<a name="l00074"></a>00074 
<a name="l00078"></a><a class="code" href="group__usb__protocol__group.html#ga3fae7189eea003bf79ac2949b0f50584">00078</a> <span class="preprocessor">#define  USB_REQ_DIR_OUT         (0&lt;&lt;7) //!&lt; Host to device</span>
<a name="l00079"></a><a class="code" href="group__usb__protocol__group.html#ga3d3c24265f68a720887ae4ff7158d605">00079</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_REQ_DIR_IN          (1&lt;&lt;7) //!&lt; Device to host</span>
<a name="l00080"></a><a class="code" href="group__usb__protocol__group.html#gac94f5ec9106e17f2e6d927eeac3d530f">00080</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_REQ_DIR_MASK        (1&lt;&lt;7) //!&lt; Mask</span>
<a name="l00081"></a>00081 <span class="preprocessor"></span>
<a name="l00085"></a><a class="code" href="group__usb__protocol__group.html#ga3eb781776ab6dcbc6fa96e1b0ed18011">00085</a> <span class="preprocessor">#define  USB_REQ_TYPE_STANDARD   (0&lt;&lt;5) //!&lt; Standard request</span>
<a name="l00086"></a><a class="code" href="group__usb__protocol__group.html#gaff9ee0044c6cb131b2908356adc37dff">00086</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_REQ_TYPE_CLASS      (1&lt;&lt;5) //!&lt; Class-specific request</span>
<a name="l00087"></a><a class="code" href="group__usb__protocol__group.html#ga71855621792f72443ed5497b313a2517">00087</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_REQ_TYPE_VENDOR     (2&lt;&lt;5) //!&lt; Vendor-specific request</span>
<a name="l00088"></a><a class="code" href="group__usb__protocol__group.html#ga8be8332e2da1e54c74c5f2a2230b0a28">00088</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_REQ_TYPE_MASK       (3&lt;&lt;5) //!&lt; Mask</span>
<a name="l00089"></a>00089 <span class="preprocessor"></span>
<a name="l00093"></a><a class="code" href="group__usb__protocol__group.html#ga65c1569b970837dd4a2ad8e1b4097589">00093</a> <span class="preprocessor">#define  USB_REQ_RECIP_DEVICE    (0&lt;&lt;0) //!&lt; Recipient device</span>
<a name="l00094"></a><a class="code" href="group__usb__protocol__group.html#gad3d0e7d70c610967cc2ee12c5298ac69">00094</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_REQ_RECIP_INTERFACE (1&lt;&lt;0) //!&lt; Recipient interface</span>
<a name="l00095"></a><a class="code" href="group__usb__protocol__group.html#ga1be00350ff83d022d41b4eae81f1e2b2">00095</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_REQ_RECIP_ENDPOINT  (2&lt;&lt;0) //!&lt; Recipient endpoint</span>
<a name="l00096"></a><a class="code" href="group__usb__protocol__group.html#gabb5706061604f770d2ce1f3891ab0296">00096</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_REQ_RECIP_OTHER     (3&lt;&lt;0) //!&lt; Recipient other</span>
<a name="l00097"></a><a class="code" href="group__usb__protocol__group.html#gab1738c19d49fe1d4c7edccff90e9e9e4">00097</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_REQ_RECIP_MASK      (0x1F) //!&lt; Mask</span>
<a name="l00098"></a>00098 <span class="preprocessor"></span>
<a name="l00102"></a><a class="code" href="group__usb__protocol__group.html#gab43332ff8dbad3dd3c8c882b1bd68a89">00102</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#gab43332ff8dbad3dd3c8c882b1bd68a89" title="Standard USB requests (bRequest)">usb_reqid</a> {
<a name="l00103"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89aa3f531db07d9720f1c27d383f17b41e7">00103</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89aa3f531db07d9720f1c27d383f17b41e7">USB_REQ_GET_STATUS</a> = 0,
<a name="l00104"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a3e7df41451462e9647ea51127b1029cb">00104</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a3e7df41451462e9647ea51127b1029cb">USB_REQ_CLEAR_FEATURE</a> = 1,
<a name="l00105"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89ac6f6f92b41b3626f3bee5585bc8ad259">00105</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89ac6f6f92b41b3626f3bee5585bc8ad259">USB_REQ_SET_FEATURE</a> = 3,
<a name="l00106"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a83a1bafe1cb5a0722e661037a7409d38">00106</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a83a1bafe1cb5a0722e661037a7409d38">USB_REQ_SET_ADDRESS</a> = 5,
<a name="l00107"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a1eefe8e6e18013141d267fc8aba28b10">00107</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a1eefe8e6e18013141d267fc8aba28b10">USB_REQ_GET_DESCRIPTOR</a> = 6,
<a name="l00108"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a2297324ad7de09fcff189cb08b6e3357">00108</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a2297324ad7de09fcff189cb08b6e3357">USB_REQ_SET_DESCRIPTOR</a> = 7,
<a name="l00109"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a70ecb7290067da81c599637126d78c32">00109</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a70ecb7290067da81c599637126d78c32">USB_REQ_GET_CONFIGURATION</a> = 8,
<a name="l00110"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a8469bf7cfc2e560c005b564fe66db0ee">00110</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a8469bf7cfc2e560c005b564fe66db0ee">USB_REQ_SET_CONFIGURATION</a> = 9,
<a name="l00111"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a68374dc6cca8653dcd52953ba9f80b1c">00111</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a68374dc6cca8653dcd52953ba9f80b1c">USB_REQ_GET_INTERFACE</a> = 10,
<a name="l00112"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a1af0d8916fca29961f41fb7433126527">00112</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a1af0d8916fca29961f41fb7433126527">USB_REQ_SET_INTERFACE</a> = 11,
<a name="l00113"></a><a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a0d759eec2d7eab896e61ff927e1752d1">00113</a>         <a class="code" href="group__usb__protocol__group.html#ggab43332ff8dbad3dd3c8c882b1bd68a89a0d759eec2d7eab896e61ff927e1752d1">USB_REQ_SYNCH_FRAME</a> = 12,
<a name="l00114"></a>00114 };
<a name="l00115"></a>00115 
<a name="l00120"></a><a class="code" href="group__usb__protocol__group.html#ga5c6f61a70ef0fda1a1d6f9a34f2f0f1c">00120</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#ga5c6f61a70ef0fda1a1d6f9a34f2f0f1c" title="Standard USB device status flags.">usb_device_status</a> {
<a name="l00121"></a><a class="code" href="group__usb__protocol__group.html#gga5c6f61a70ef0fda1a1d6f9a34f2f0f1cabba07ddaf5eb0b763086ab99ed82b59f">00121</a>         <a class="code" href="group__usb__protocol__group.html#gga5c6f61a70ef0fda1a1d6f9a34f2f0f1cabba07ddaf5eb0b763086ab99ed82b59f">USB_DEV_STATUS_BUS_POWERED</a> = 0,
<a name="l00122"></a><a class="code" href="group__usb__protocol__group.html#gga5c6f61a70ef0fda1a1d6f9a34f2f0f1ca762e18607a236d99504f5838e96beb36">00122</a>         <a class="code" href="group__usb__protocol__group.html#gga5c6f61a70ef0fda1a1d6f9a34f2f0f1ca762e18607a236d99504f5838e96beb36">USB_DEV_STATUS_SELF_POWERED</a> = 1,
<a name="l00123"></a><a class="code" href="group__usb__protocol__group.html#gga5c6f61a70ef0fda1a1d6f9a34f2f0f1ca9e2a686363488906b279116d3d66103c">00123</a>         <a class="code" href="group__usb__protocol__group.html#gga5c6f61a70ef0fda1a1d6f9a34f2f0f1ca9e2a686363488906b279116d3d66103c">USB_DEV_STATUS_REMOTEWAKEUP</a> = 2
<a name="l00124"></a>00124 };
<a name="l00125"></a>00125 
<a name="l00130"></a><a class="code" href="group__usb__protocol__group.html#ga61c6d9f1bcc6112f394333fac658d627">00130</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#ga61c6d9f1bcc6112f394333fac658d627" title="Standard USB Interface status flags.">usb_interface_status</a> {
<a name="l00131"></a><a class="code" href="group__usb__protocol__group.html#gga61c6d9f1bcc6112f394333fac658d627a00df9dc714d093525b1f0163f6625329">00131</a>         <a class="code" href="group__usb__protocol__group.html#gga61c6d9f1bcc6112f394333fac658d627a00df9dc714d093525b1f0163f6625329">USB_IFACE_STATUS_RESERVED</a> = 0
<a name="l00132"></a>00132 };
<a name="l00133"></a>00133 
<a name="l00138"></a><a class="code" href="group__usb__protocol__group.html#gaf926ff975fcda57f214001b51f15092d">00138</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#gaf926ff975fcda57f214001b51f15092d" title="Standard USB endpoint status flags.">usb_endpoint_status</a> {
<a name="l00139"></a><a class="code" href="group__usb__protocol__group.html#ggaf926ff975fcda57f214001b51f15092dae0ba5849fded7e7ea411f11bd627b040">00139</a>         <a class="code" href="group__usb__protocol__group.html#ggaf926ff975fcda57f214001b51f15092dae0ba5849fded7e7ea411f11bd627b040">USB_EP_STATUS_HALTED</a> = 1,
<a name="l00140"></a>00140 };
<a name="l00141"></a>00141 
<a name="l00147"></a><a class="code" href="group__usb__protocol__group.html#gab9975b89ad7079085d0300eab037c3ac">00147</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#gab9975b89ad7079085d0300eab037c3ac" title="Standard USB device feature flags.">usb_device_feature</a> {
<a name="l00148"></a><a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3aca9d1f5e6a07463ac38743db611c2c414a">00148</a>         <a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3aca9d1f5e6a07463ac38743db611c2c414a" title="Remote wakeup enabled.">USB_DEV_FEATURE_REMOTE_WAKEUP</a> = 1,      
<a name="l00149"></a><a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3aca6724ffaefab5a3c54b199c4d1ea7b6ff">00149</a>         <a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3aca6724ffaefab5a3c54b199c4d1ea7b6ff" title="USB test mode.">USB_DEV_FEATURE_TEST_MODE</a> = 2,  
<a name="l00150"></a><a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3aca57260a8f513dcdd3bd2285d53d09eee6">00150</a>         <a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3aca57260a8f513dcdd3bd2285d53d09eee6">USB_DEV_FEATURE_OTG_B_HNP_ENABLE</a> = 3,
<a name="l00151"></a><a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3acaa1a5410f25b09a7351d8701574770e5a">00151</a>         <a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3acaa1a5410f25b09a7351d8701574770e5a">USB_DEV_FEATURE_OTG_A_HNP_SUPPORT</a> = 4,
<a name="l00152"></a><a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3acac16fde59a39765321c5649b7f23145cb">00152</a>         <a class="code" href="group__usb__protocol__group.html#ggab9975b89ad7079085d0300eab037c3acac16fde59a39765321c5649b7f23145cb">USB_DEV_FEATURE_OTG_A_ALT_HNP_SUPPORT</a> = 5
<a name="l00153"></a>00153 };
<a name="l00154"></a>00154 
<a name="l00160"></a><a class="code" href="group__usb__protocol__group.html#ga9027bb283d3666e351fe5c403292cf2e">00160</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#ga9027bb283d3666e351fe5c403292cf2e" title="Test Mode possible on HS USB device.">usb_device_hs_test_mode</a> {
<a name="l00161"></a><a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2ea713e4c1b7782e135f6e269d98fdd8ce5">00161</a>         <a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2ea713e4c1b7782e135f6e269d98fdd8ce5">USB_DEV_TEST_MODE_J</a> = 1,
<a name="l00162"></a><a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2ea7ca60c446646b513db46c8d70f95246d">00162</a>         <a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2ea7ca60c446646b513db46c8d70f95246d">USB_DEV_TEST_MODE_K</a> = 2,
<a name="l00163"></a><a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2eacf3a0aaed1aab82bfee139fd1b3f8126">00163</a>         <a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2eacf3a0aaed1aab82bfee139fd1b3f8126">USB_DEV_TEST_MODE_SE0_NAK</a> = 3,
<a name="l00164"></a><a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2eaae5d97af6d3f98cd6e4fc15d9a5eb5e9">00164</a>         <a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2eaae5d97af6d3f98cd6e4fc15d9a5eb5e9">USB_DEV_TEST_MODE_PACKET</a> = 4,
<a name="l00165"></a><a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2ea018bc9685230b902d4432c5705161df3">00165</a>         <a class="code" href="group__usb__protocol__group.html#gga9027bb283d3666e351fe5c403292cf2ea018bc9685230b902d4432c5705161df3">USB_DEV_TEST_MODE_FORCE_ENABLE</a> = 5,
<a name="l00166"></a>00166 };
<a name="l00167"></a>00167 
<a name="l00171"></a><a class="code" href="group__usb__protocol__group.html#gac46bc23132eb03cefa56ba47024ced5d">00171</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#gac46bc23132eb03cefa56ba47024ced5d" title="Standard USB endpoint feature/status flags.">usb_endpoint_feature</a> {
<a name="l00172"></a><a class="code" href="group__usb__protocol__group.html#ggac46bc23132eb03cefa56ba47024ced5daa346bf01bfcb9964e754b44c9b999d16">00172</a>         <a class="code" href="group__usb__protocol__group.html#ggac46bc23132eb03cefa56ba47024ced5daa346bf01bfcb9964e754b44c9b999d16">USB_EP_FEATURE_HALT</a> = 0,
<a name="l00173"></a>00173 };
<a name="l00174"></a>00174 
<a name="l00178"></a><a class="code" href="group__usb__protocol__group.html#gade3fc5b71e88ed167a8c8d67ee087db3">00178</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#gade3fc5b71e88ed167a8c8d67ee087db3" title="Standard USB Test Mode Selectors.">usb_test_mode_selector</a> {
<a name="l00179"></a><a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3ad8a1b477f0fa871dbde208745635eb09">00179</a>         <a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3ad8a1b477f0fa871dbde208745635eb09">USB_TEST_J</a> = 0x01,
<a name="l00180"></a><a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3adf91b3ec7a11997b124e2ecb2bcb3965">00180</a>         <a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3adf91b3ec7a11997b124e2ecb2bcb3965">USB_TEST_K</a> = 0x02,
<a name="l00181"></a><a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3a14e0870eb309e2408717e26febf54c5f">00181</a>         <a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3a14e0870eb309e2408717e26febf54c5f">USB_TEST_SE0_NAK</a> = 0x03,
<a name="l00182"></a><a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3a11aadaaa6768ad9140a0ad6f8543d245">00182</a>         <a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3a11aadaaa6768ad9140a0ad6f8543d245">USB_TEST_PACKET</a> = 0x04,
<a name="l00183"></a><a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3ae6d07dd0dfbb61581ad6d548ab26904a">00183</a>         <a class="code" href="group__usb__protocol__group.html#ggade3fc5b71e88ed167a8c8d67ee087db3ae6d07dd0dfbb61581ad6d548ab26904a">USB_TEST_FORCE_ENABLE</a> = 0x05,
<a name="l00184"></a>00184 };
<a name="l00185"></a>00185 
<a name="l00189"></a><a class="code" href="group__usb__protocol__group.html#ga87d46dd117d939964c939f1518dec93f">00189</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#ga87d46dd117d939964c939f1518dec93f" title="Standard USB descriptor types.">usb_descriptor_type</a> {
<a name="l00190"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93faf57d79677304d9cc81a1e08769259c56">00190</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93faf57d79677304d9cc81a1e08769259c56">USB_DT_DEVICE</a> = 1,
<a name="l00191"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa30b73c8e214a98c686c6e97aabc3b3d7">00191</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa30b73c8e214a98c686c6e97aabc3b3d7">USB_DT_CONFIGURATION</a> = 2,
<a name="l00192"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93faa745915a1e9b09eba35fdd2d455d5100">00192</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93faa745915a1e9b09eba35fdd2d455d5100">USB_DT_STRING</a> = 3,
<a name="l00193"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa5d95804e21ff8a4aba8f9806c5f35edc">00193</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa5d95804e21ff8a4aba8f9806c5f35edc">USB_DT_INTERFACE</a> = 4,
<a name="l00194"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa2b4e1c2a152ef2c70fd494de1806e325">00194</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa2b4e1c2a152ef2c70fd494de1806e325">USB_DT_ENDPOINT</a> = 5,
<a name="l00195"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fab135351d3cd9a92a46b80fbb28d0f1b3">00195</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fab135351d3cd9a92a46b80fbb28d0f1b3">USB_DT_DEVICE_QUALIFIER</a> = 6,
<a name="l00196"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa629e5f41e4643166d544404799d323ea">00196</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa629e5f41e4643166d544404799d323ea">USB_DT_OTHER_SPEED_CONFIGURATION</a> = 7,
<a name="l00197"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93faae58238f1f4dd82be5f7797daa88f972">00197</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93faae58238f1f4dd82be5f7797daa88f972">USB_DT_INTERFACE_POWER</a> = 8,
<a name="l00198"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa7085a50a6df3338204b21aa106e68ab8">00198</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fa7085a50a6df3338204b21aa106e68ab8">USB_DT_OTG</a> = 9,
<a name="l00199"></a><a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fae32d49584455205c80a5675e933810f5">00199</a>         <a class="code" href="group__usb__protocol__group.html#gga87d46dd117d939964c939f1518dec93fae32d49584455205c80a5675e933810f5">USB_DT_IAD</a> = 0x0B,
<a name="l00200"></a>00200 };
<a name="l00201"></a>00201 
<a name="l00205"></a><a class="code" href="group__usb__protocol__group.html#ga666def795a15032e5bf93a450f79113f">00205</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#ga666def795a15032e5bf93a450f79113f" title="Standard USB endpoint transfer types.">usb_ep_type</a> {
<a name="l00206"></a><a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa134795bdea12ea96534b37c9f606d497">00206</a>         <a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa134795bdea12ea96534b37c9f606d497">USB_EP_TYPE_CONTROL</a> = 0x00,
<a name="l00207"></a><a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa93bb5aaf88b4842a0bed6a6380790c1e">00207</a>         <a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa93bb5aaf88b4842a0bed6a6380790c1e">USB_EP_TYPE_ISOCHRONOUS</a> = 0x01,
<a name="l00208"></a><a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa173f6c972814d347875b71d85ddfc1b1">00208</a>         <a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa173f6c972814d347875b71d85ddfc1b1">USB_EP_TYPE_BULK</a> = 0x02,
<a name="l00209"></a><a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa2b6d776cb0d3f3812620bda8fc51439b">00209</a>         <a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa2b6d776cb0d3f3812620bda8fc51439b">USB_EP_TYPE_INTERRUPT</a> = 0x03,
<a name="l00210"></a><a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa8169dcca1e5ea5ef9e0d11155b9728bb">00210</a>         <a class="code" href="group__usb__protocol__group.html#gga666def795a15032e5bf93a450f79113fa8169dcca1e5ea5ef9e0d11155b9728bb">USB_EP_TYPE_MASK</a> = 0x03,
<a name="l00211"></a>00211 };
<a name="l00212"></a>00212 
<a name="l00216"></a><a class="code" href="group__usb__protocol__group.html#ga1f92deaf695c06566999f0c5343978c1">00216</a> <span class="keyword">enum</span> <a class="code" href="group__usb__protocol__group.html#ga1f92deaf695c06566999f0c5343978c1" title="Standard USB language IDs for string descriptors.">usb_langid</a> {
<a name="l00217"></a><a class="code" href="group__usb__protocol__group.html#gga1f92deaf695c06566999f0c5343978c1a8acad914e2d28c9bb1d2d3cc74c5b39e">00217</a>         <a class="code" href="group__usb__protocol__group.html#gga1f92deaf695c06566999f0c5343978c1a8acad914e2d28c9bb1d2d3cc74c5b39e" title="English (United States)">USB_LANGID_EN_US</a> = 0x0409,      
<a name="l00218"></a>00218 };
<a name="l00219"></a>00219 
<a name="l00223"></a><a class="code" href="group__usb__protocol__group.html#ga0316d8f43a1648b76df257332b26aeb9">00223</a> <span class="preprocessor">#define  USB_EP_ADDR_MASK     0x0f</span>
<a name="l00224"></a>00224 <span class="preprocessor"></span>
<a name="l00227"></a><a class="code" href="group__usb__protocol__group.html#gaae8411e95f26738326bc25a0161dde99">00227</a> <span class="preprocessor">#define  USB_EP_DIR_IN        0x80</span>
<a name="l00228"></a>00228 <span class="preprocessor"></span>
<a name="l00231"></a><a class="code" href="group__usb__protocol__group.html#ga0510b0a04d9cef144e4d9793310abccf">00231</a> <span class="preprocessor">#define  USB_EP_DIR_OUT       0x00</span>
<a name="l00232"></a>00232 <span class="preprocessor"></span>
<a name="l00239"></a><a class="code" href="group__usb__protocol__group.html#ga27dacd4e0b04d4ef7b8aadf6ea886f3c">00239</a> <span class="preprocessor">#define  USB_MAX_DESC_LEN     255</span>
<a name="l00240"></a>00240 <span class="preprocessor"></span>
<a name="l00241"></a>00241 <span class="comment">/*</span>
<a name="l00242"></a>00242 <span class="comment"> * 2-byte alignment requested for all USB structures.</span>
<a name="l00243"></a>00243 <span class="comment"> */</span>
<a name="l00244"></a>00244 <a class="code" href="group__udi__cdc__group__desc.html#ga14096700b3ed8c5168615c5c5ee1c68d" title="Structure for USB Device Configuration Descriptor.">COMPILER_PACK_SET</a>(1);
<a name="l00245"></a>00245 
<a name="l00251"></a><a class="code" href="structusb__setup__req__t.html">00251</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00252"></a><a class="code" href="structusb__setup__req__t.html#a4d0bc5061aba087bd50d83c5a120b833">00252</a>         uint8_t <a class="code" href="structusb__setup__req__t.html#a4d0bc5061aba087bd50d83c5a120b833">bmRequestType</a>;
<a name="l00253"></a><a class="code" href="structusb__setup__req__t.html#ac88656bbea11e32e0be42cd178eba600">00253</a>         uint8_t <a class="code" href="structusb__setup__req__t.html#ac88656bbea11e32e0be42cd178eba600">bRequest</a>;
<a name="l00254"></a><a class="code" href="structusb__setup__req__t.html#ab5516d82c87a1334e7ca6fa3bb418faa">00254</a>         le16_t <a class="code" href="structusb__setup__req__t.html#ab5516d82c87a1334e7ca6fa3bb418faa">wValue</a>;
<a name="l00255"></a><a class="code" href="structusb__setup__req__t.html#ae6ca45a24d06a2ccef7a06b71d1b1699">00255</a>         le16_t <a class="code" href="structusb__setup__req__t.html#ae6ca45a24d06a2ccef7a06b71d1b1699">wIndex</a>;
<a name="l00256"></a><a class="code" href="structusb__setup__req__t.html#a2e8a9bbc9ed2e64335345338a5b4ce1e">00256</a>         le16_t <a class="code" href="structusb__setup__req__t.html#a2e8a9bbc9ed2e64335345338a5b4ce1e">wLength</a>;
<a name="l00257"></a>00257 } <a class="code" href="structusb__setup__req__t.html" title="A USB Device SETUP request.">usb_setup_req_t</a>;
<a name="l00258"></a>00258 
<a name="l00262"></a><a class="code" href="structusb__dev__desc__t.html">00262</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00263"></a><a class="code" href="structusb__dev__desc__t.html#af4db977f6cd877847a47fc2c9f23507d">00263</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#af4db977f6cd877847a47fc2c9f23507d">bLength</a>;
<a name="l00264"></a><a class="code" href="structusb__dev__desc__t.html#a840d4136b9b6662fb2bab49053949c1b">00264</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#a840d4136b9b6662fb2bab49053949c1b">bDescriptorType</a>;
<a name="l00265"></a><a class="code" href="structusb__dev__desc__t.html#a45f7d74df9688a10a41a69de613d0191">00265</a>         le16_t <a class="code" href="structusb__dev__desc__t.html#a45f7d74df9688a10a41a69de613d0191">bcdUSB</a>;
<a name="l00266"></a><a class="code" href="structusb__dev__desc__t.html#a64f6606c681beb18f1d13d701d1264c2">00266</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#a64f6606c681beb18f1d13d701d1264c2">bDeviceClass</a>;
<a name="l00267"></a><a class="code" href="structusb__dev__desc__t.html#a49aec064889f05135fdf38bc94e41c47">00267</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#a49aec064889f05135fdf38bc94e41c47">bDeviceSubClass</a>;
<a name="l00268"></a><a class="code" href="structusb__dev__desc__t.html#a7247d3a045b2fc63569651cfeb059401">00268</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#a7247d3a045b2fc63569651cfeb059401">bDeviceProtocol</a>;
<a name="l00269"></a><a class="code" href="structusb__dev__desc__t.html#a382212d11df623e7c4b7d4787892f551">00269</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#a382212d11df623e7c4b7d4787892f551">bMaxPacketSize0</a>;
<a name="l00270"></a><a class="code" href="structusb__dev__desc__t.html#a929b87a9372d2fb886cdfa9ac50108df">00270</a>         le16_t <a class="code" href="structusb__dev__desc__t.html#a929b87a9372d2fb886cdfa9ac50108df">idVendor</a>;
<a name="l00271"></a><a class="code" href="structusb__dev__desc__t.html#a5102924a87c42fb7d962e6f51df913be">00271</a>         le16_t <a class="code" href="structusb__dev__desc__t.html#a5102924a87c42fb7d962e6f51df913be">idProduct</a>;
<a name="l00272"></a><a class="code" href="structusb__dev__desc__t.html#ace438955df22cd6527b8f1d543c41aed">00272</a>         le16_t <a class="code" href="structusb__dev__desc__t.html#ace438955df22cd6527b8f1d543c41aed">bcdDevice</a>;
<a name="l00273"></a><a class="code" href="structusb__dev__desc__t.html#ac981257b49a80b33109a3c9221e222ef">00273</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#ac981257b49a80b33109a3c9221e222ef">iManufacturer</a>;
<a name="l00274"></a><a class="code" href="structusb__dev__desc__t.html#a2b7a0e3e8fc29da7fb47dbeb507556ad">00274</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#a2b7a0e3e8fc29da7fb47dbeb507556ad">iProduct</a>;
<a name="l00275"></a><a class="code" href="structusb__dev__desc__t.html#aada14a1b1dd2a396544624c21ed84291">00275</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#aada14a1b1dd2a396544624c21ed84291">iSerialNumber</a>;
<a name="l00276"></a><a class="code" href="structusb__dev__desc__t.html#ae1e58f9b7987e22fde8306ad4a3e50a8">00276</a>         uint8_t <a class="code" href="structusb__dev__desc__t.html#ae1e58f9b7987e22fde8306ad4a3e50a8">bNumConfigurations</a>;
<a name="l00277"></a>00277 } <a class="code" href="structusb__dev__desc__t.html" title="Standard USB device descriptor stucture.">usb_dev_desc_t</a>;
<a name="l00278"></a>00278 
<a name="l00287"></a><a class="code" href="structusb__dev__qual__desc__t.html">00287</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00288"></a><a class="code" href="structusb__dev__qual__desc__t.html#ac0461d921c31be2a9b10801369483735">00288</a>         uint8_t <a class="code" href="structusb__dev__qual__desc__t.html#ac0461d921c31be2a9b10801369483735">bLength</a>;
<a name="l00289"></a><a class="code" href="structusb__dev__qual__desc__t.html#aed758dffce7cdb50d55d5abc14616e2c">00289</a>         uint8_t <a class="code" href="structusb__dev__qual__desc__t.html#aed758dffce7cdb50d55d5abc14616e2c">bDescriptorType</a>;
<a name="l00290"></a><a class="code" href="structusb__dev__qual__desc__t.html#aaa85310913481e227da025a8b37c988f">00290</a>         le16_t <a class="code" href="structusb__dev__qual__desc__t.html#aaa85310913481e227da025a8b37c988f">bcdUSB</a>;
<a name="l00291"></a><a class="code" href="structusb__dev__qual__desc__t.html#a16fd77f16bb0389ff50102288857604c">00291</a>         uint8_t <a class="code" href="structusb__dev__qual__desc__t.html#a16fd77f16bb0389ff50102288857604c">bDeviceClass</a>;
<a name="l00292"></a><a class="code" href="structusb__dev__qual__desc__t.html#a98b076218edfb23d4f5e2bc0def61ccd">00292</a>         uint8_t <a class="code" href="structusb__dev__qual__desc__t.html#a98b076218edfb23d4f5e2bc0def61ccd">bDeviceSubClass</a>;
<a name="l00293"></a><a class="code" href="structusb__dev__qual__desc__t.html#ab6fc5f8ccf24352ff0add744af39f175">00293</a>         uint8_t <a class="code" href="structusb__dev__qual__desc__t.html#ab6fc5f8ccf24352ff0add744af39f175">bDeviceProtocol</a>;
<a name="l00294"></a><a class="code" href="structusb__dev__qual__desc__t.html#aacddb717f4dfcee86c5ff917c421657e">00294</a>         uint8_t <a class="code" href="structusb__dev__qual__desc__t.html#aacddb717f4dfcee86c5ff917c421657e">bMaxPacketSize0</a>;
<a name="l00295"></a><a class="code" href="structusb__dev__qual__desc__t.html#abc20c54ce8c80873029d9b4a3579ea4b">00295</a>         uint8_t <a class="code" href="structusb__dev__qual__desc__t.html#abc20c54ce8c80873029d9b4a3579ea4b">bNumConfigurations</a>;
<a name="l00296"></a><a class="code" href="structusb__dev__qual__desc__t.html#acd51487e6ef5f7c93f5e9752963b9e26">00296</a>         uint8_t <a class="code" href="structusb__dev__qual__desc__t.html#acd51487e6ef5f7c93f5e9752963b9e26">bReserved</a>;
<a name="l00297"></a>00297 } <a class="code" href="structusb__dev__qual__desc__t.html" title="Standard USB device qualifier descriptor structure.">usb_dev_qual_desc_t</a>;
<a name="l00298"></a>00298 
<a name="l00299"></a>00299 
<a name="l00303"></a><a class="code" href="structusb__association__desc__t.html">00303</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00304"></a><a class="code" href="structusb__association__desc__t.html#a774827521c274300369abe56757a12be">00304</a>         uint8_t <a class="code" href="structusb__association__desc__t.html#a774827521c274300369abe56757a12be" title="size of this descriptor in bytes">bLength</a>;        
<a name="l00305"></a><a class="code" href="structusb__association__desc__t.html#a5ffca50476ae4206a7ce2e4e896f5efe">00305</a>         uint8_t <a class="code" href="structusb__association__desc__t.html#a5ffca50476ae4206a7ce2e4e896f5efe" title="INTERFACE descriptor type.">bDescriptorType</a>;        
<a name="l00306"></a><a class="code" href="structusb__association__desc__t.html#ac40074d8093e2be0f98b7513fb3e42f8">00306</a>         uint8_t <a class="code" href="structusb__association__desc__t.html#ac40074d8093e2be0f98b7513fb3e42f8" title="Number of interface.">bFirstInterface</a>;        
<a name="l00307"></a><a class="code" href="structusb__association__desc__t.html#a3fa0288c02ae9c72411f564ecf427c5b">00307</a>         uint8_t <a class="code" href="structusb__association__desc__t.html#a3fa0288c02ae9c72411f564ecf427c5b" title="value to select alternate setting">bInterfaceCount</a>;        
<a name="l00308"></a><a class="code" href="structusb__association__desc__t.html#af2f295c5ccf362d8db46b712549e467a">00308</a>         uint8_t <a class="code" href="structusb__association__desc__t.html#af2f295c5ccf362d8db46b712549e467a" title="Class code assigned by the USB.">bFunctionClass</a>; 
<a name="l00309"></a><a class="code" href="structusb__association__desc__t.html#a4ab4cadd0f156f30edea9d4724501a06">00309</a>         uint8_t <a class="code" href="structusb__association__desc__t.html#a4ab4cadd0f156f30edea9d4724501a06" title="Sub-class code assigned by the USB.">bFunctionSubClass</a>;      
<a name="l00310"></a><a class="code" href="structusb__association__desc__t.html#a7e136eb3457b18de956967735b236783">00310</a>         uint8_t <a class="code" href="structusb__association__desc__t.html#a7e136eb3457b18de956967735b236783" title="Protocol code assigned by the USB.">bFunctionProtocol</a>;      
<a name="l00311"></a><a class="code" href="structusb__association__desc__t.html#aeedbc36cd31e652127b78004b0c66031">00311</a>         uint8_t <a class="code" href="structusb__association__desc__t.html#aeedbc36cd31e652127b78004b0c66031" title="Index of string descriptor.">iFunction</a>;      
<a name="l00312"></a>00312 } <a class="code" href="structusb__association__desc__t.html" title="Standard USB Interface Association Descriptor structure.">usb_association_desc_t</a>;
<a name="l00313"></a>00313 
<a name="l00314"></a>00314 
<a name="l00318"></a><a class="code" href="structusb__conf__desc__t.html">00318</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00319"></a><a class="code" href="structusb__conf__desc__t.html#acd480c332f94a519f5fe6f947801aa21">00319</a>         uint8_t <a class="code" href="structusb__conf__desc__t.html#acd480c332f94a519f5fe6f947801aa21">bLength</a>;
<a name="l00320"></a><a class="code" href="structusb__conf__desc__t.html#a0fa7aed7ce2f5284a7d7118e96248076">00320</a>         uint8_t <a class="code" href="structusb__conf__desc__t.html#a0fa7aed7ce2f5284a7d7118e96248076">bDescriptorType</a>;
<a name="l00321"></a><a class="code" href="structusb__conf__desc__t.html#afa2ba7e6e481d99b0dd4c40744efc5bb">00321</a>         le16_t <a class="code" href="structusb__conf__desc__t.html#afa2ba7e6e481d99b0dd4c40744efc5bb">wTotalLength</a>;
<a name="l00322"></a><a class="code" href="structusb__conf__desc__t.html#a445aa9404b196af184c74d3f8dfe691f">00322</a>         uint8_t <a class="code" href="structusb__conf__desc__t.html#a445aa9404b196af184c74d3f8dfe691f">bNumInterfaces</a>;
<a name="l00323"></a><a class="code" href="structusb__conf__desc__t.html#a74bb8bfa73467043c5135ed02381e291">00323</a>         uint8_t <a class="code" href="structusb__conf__desc__t.html#a74bb8bfa73467043c5135ed02381e291">bConfigurationValue</a>;
<a name="l00324"></a><a class="code" href="structusb__conf__desc__t.html#a87ae189b300bdce2b61e690797218e79">00324</a>         uint8_t <a class="code" href="structusb__conf__desc__t.html#a87ae189b300bdce2b61e690797218e79">iConfiguration</a>;
<a name="l00325"></a><a class="code" href="structusb__conf__desc__t.html#a46f189582cb2ccdd46ded73ebd518d74">00325</a>         uint8_t <a class="code" href="structusb__conf__desc__t.html#a46f189582cb2ccdd46ded73ebd518d74">bmAttributes</a>;
<a name="l00326"></a><a class="code" href="structusb__conf__desc__t.html#aa514d0a8b697cc3035bbaea8553638ec">00326</a>         uint8_t <a class="code" href="structusb__conf__desc__t.html#aa514d0a8b697cc3035bbaea8553638ec">bMaxPower</a>;
<a name="l00327"></a>00327 } <a class="code" href="structusb__conf__desc__t.html" title="Standard USB configuration descriptor structure.">usb_conf_desc_t</a>;
<a name="l00328"></a>00328 
<a name="l00329"></a>00329 
<a name="l00330"></a><a class="code" href="group__usb__protocol__group.html#gac7063e965def0eaeb4d45a6f9048dc53">00330</a> <span class="preprocessor">#define  USB_CONFIG_ATTR_MUST_SET         (1 &lt;&lt; 7)      //!&lt; Must always be set</span>
<a name="l00331"></a><a class="code" href="group__usb__protocol__group.html#ga10945c8d92454009444979c38b9d2cca">00331</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_CONFIG_ATTR_BUS_POWERED      (0 &lt;&lt; 6)      //!&lt; Bus-powered</span>
<a name="l00332"></a><a class="code" href="group__usb__protocol__group.html#gaf1b445db8c331630bbedb383544ed80b">00332</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_CONFIG_ATTR_SELF_POWERED     (1 &lt;&lt; 6)      //!&lt; Self-powered</span>
<a name="l00333"></a><a class="code" href="group__usb__protocol__group.html#gab8f513d1888f75d8e18960e1b1f3f747">00333</a> <span class="preprocessor"></span><span class="preprocessor">#define  USB_CONFIG_ATTR_REMOTE_WAKEUP    (1 &lt;&lt; 5)      //!&lt; remote wakeup supported</span>
<a name="l00334"></a>00334 <span class="preprocessor"></span>
<a name="l00335"></a><a class="code" href="group__usb__protocol__group.html#ga55d9db758a4f408eebf4b26c6001ac9b">00335</a> <span class="preprocessor">#define  USB_CONFIG_MAX_POWER(ma)         (((ma) + 1) / 2)      //!&lt; Max power in mA</span>
<a name="l00336"></a>00336 <span class="preprocessor"></span>
<a name="l00340"></a><a class="code" href="structusb__iad__desc__t.html">00340</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00341"></a><a class="code" href="structusb__iad__desc__t.html#a13a3d5b27f54c67d2115e48902ce68c7">00341</a>         uint8_t <a class="code" href="structusb__iad__desc__t.html#a13a3d5b27f54c67d2115e48902ce68c7" title="Size of this descriptor in bytes.">bLength</a>;              
<a name="l00342"></a><a class="code" href="structusb__iad__desc__t.html#aad5b760da92290217db3463a7342a7b4">00342</a>         uint8_t <a class="code" href="structusb__iad__desc__t.html#aad5b760da92290217db3463a7342a7b4" title="Interface descriptor type.">bDescriptorType</a>;      
<a name="l00343"></a><a class="code" href="structusb__iad__desc__t.html#a0d32a4f394cd5bc64295725434eeccfd">00343</a>         uint8_t <a class="code" href="structusb__iad__desc__t.html#a0d32a4f394cd5bc64295725434eeccfd" title="Number of interface.">bFirstInterface</a>;      
<a name="l00344"></a><a class="code" href="structusb__iad__desc__t.html#a405850b6548dd1b924e386e3bd8569eb">00344</a>         uint8_t <a class="code" href="structusb__iad__desc__t.html#a405850b6548dd1b924e386e3bd8569eb" title="value to select alternate setting">bInterfaceCount</a>;      
<a name="l00345"></a><a class="code" href="structusb__iad__desc__t.html#ae013d91f59930b0343201cfe6d5ad82b">00345</a>         uint8_t <a class="code" href="structusb__iad__desc__t.html#ae013d91f59930b0343201cfe6d5ad82b" title="Class code assigned by the USB.">bFunctionClass</a>;       
<a name="l00346"></a><a class="code" href="structusb__iad__desc__t.html#a32c8d93140dbad4009d6a0027b3ac6f2">00346</a>         uint8_t <a class="code" href="structusb__iad__desc__t.html#a32c8d93140dbad4009d6a0027b3ac6f2" title="Sub-class code assigned by the USB.">bFunctionSubClass</a>;    
<a name="l00347"></a><a class="code" href="structusb__iad__desc__t.html#ac9ddebd0442428896e30837a4b52f771">00347</a>         uint8_t <a class="code" href="structusb__iad__desc__t.html#ac9ddebd0442428896e30837a4b52f771" title="Protocol code assigned by the USB.">bFunctionProtocol</a>;    
<a name="l00348"></a><a class="code" href="structusb__iad__desc__t.html#a43d33cc1c219b1cac0c340dbcf1ec107">00348</a>         uint8_t <a class="code" href="structusb__iad__desc__t.html#a43d33cc1c219b1cac0c340dbcf1ec107" title="Index of string descriptor.">iFunction</a>;            
<a name="l00349"></a>00349 } <a class="code" href="structusb__iad__desc__t.html" title="Standard USB association descriptor structure.">usb_iad_desc_t</a>;
<a name="l00350"></a>00350 
<a name="l00354"></a><a class="code" href="structusb__iface__desc__t.html">00354</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00355"></a><a class="code" href="structusb__iface__desc__t.html#ac1a5ca3d8e481aabfabfecb92727eede">00355</a>         uint8_t <a class="code" href="structusb__iface__desc__t.html#ac1a5ca3d8e481aabfabfecb92727eede">bLength</a>;
<a name="l00356"></a><a class="code" href="structusb__iface__desc__t.html#afa98c630cd3015ed3b1795f1ad24a508">00356</a>         uint8_t <a class="code" href="structusb__iface__desc__t.html#afa98c630cd3015ed3b1795f1ad24a508">bDescriptorType</a>;
<a name="l00357"></a><a class="code" href="structusb__iface__desc__t.html#a7e39e94123157feab346546e3034d166">00357</a>         uint8_t <a class="code" href="structusb__iface__desc__t.html#a7e39e94123157feab346546e3034d166">bInterfaceNumber</a>;
<a name="l00358"></a><a class="code" href="structusb__iface__desc__t.html#af26f8d8edc08cb2c5fb61c51fdb06a25">00358</a>         uint8_t <a class="code" href="structusb__iface__desc__t.html#af26f8d8edc08cb2c5fb61c51fdb06a25">bAlternateSetting</a>;
<a name="l00359"></a><a class="code" href="structusb__iface__desc__t.html#aae7be1499654d689018b8c450b86f574">00359</a>         uint8_t <a class="code" href="structusb__iface__desc__t.html#aae7be1499654d689018b8c450b86f574">bNumEndpoints</a>;
<a name="l00360"></a><a class="code" href="structusb__iface__desc__t.html#a2d812b3326e8aafcfd03c71b72ea8d40">00360</a>         uint8_t <a class="code" href="structusb__iface__desc__t.html#a2d812b3326e8aafcfd03c71b72ea8d40">bInterfaceClass</a>;
<a name="l00361"></a><a class="code" href="structusb__iface__desc__t.html#a023635bd8337ab81717bae41de80ff06">00361</a>         uint8_t <a class="code" href="structusb__iface__desc__t.html#a023635bd8337ab81717bae41de80ff06">bInterfaceSubClass</a>;
<a name="l00362"></a><a class="code" href="structusb__iface__desc__t.html#a3f8436d03bdd0ca6691c3ead758b9f4a">00362</a>         uint8_t <a class="code" href="structusb__iface__desc__t.html#a3f8436d03bdd0ca6691c3ead758b9f4a">bInterfaceProtocol</a>;
<a name="l00363"></a><a class="code" href="structusb__iface__desc__t.html#a44cb19ca24e0659fcb3fa7e2522711bb">00363</a>         uint8_t <a class="code" href="structusb__iface__desc__t.html#a44cb19ca24e0659fcb3fa7e2522711bb">iInterface</a>;
<a name="l00364"></a>00364 } <a class="code" href="structusb__iface__desc__t.html" title="Standard USB interface descriptor structure.">usb_iface_desc_t</a>;
<a name="l00365"></a>00365 
<a name="l00369"></a><a class="code" href="structusb__ep__desc__t.html">00369</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00370"></a><a class="code" href="structusb__ep__desc__t.html#a1b1f36413d7701c85786390adc914671">00370</a>         uint8_t <a class="code" href="structusb__ep__desc__t.html#a1b1f36413d7701c85786390adc914671">bLength</a>;
<a name="l00371"></a><a class="code" href="structusb__ep__desc__t.html#ae881cfe829a29de12aea7dcc64c84d76">00371</a>         uint8_t <a class="code" href="structusb__ep__desc__t.html#ae881cfe829a29de12aea7dcc64c84d76">bDescriptorType</a>;
<a name="l00372"></a><a class="code" href="structusb__ep__desc__t.html#ae72d2c478693d43712626763e1b9f311">00372</a>         uint8_t <a class="code" href="structusb__ep__desc__t.html#ae72d2c478693d43712626763e1b9f311">bEndpointAddress</a>;
<a name="l00373"></a><a class="code" href="structusb__ep__desc__t.html#ae4a54c991f53573380f4500395ed2e1a">00373</a>         uint8_t <a class="code" href="structusb__ep__desc__t.html#ae4a54c991f53573380f4500395ed2e1a">bmAttributes</a>;
<a name="l00374"></a><a class="code" href="structusb__ep__desc__t.html#a7224435989a3b19385f6c37f9e606313">00374</a>         le16_t <a class="code" href="structusb__ep__desc__t.html#a7224435989a3b19385f6c37f9e606313">wMaxPacketSize</a>;
<a name="l00375"></a><a class="code" href="structusb__ep__desc__t.html#aa1dac2219f2a658d66e768f138604f1c">00375</a>         uint8_t <a class="code" href="structusb__ep__desc__t.html#aa1dac2219f2a658d66e768f138604f1c">bInterval</a>;
<a name="l00376"></a>00376 } <a class="code" href="structusb__ep__desc__t.html" title="Standard USB endpoint descriptor stcuture.">usb_ep_desc_t</a>;
<a name="l00377"></a>00377 
<a name="l00378"></a>00378 
<a name="l00382"></a><a class="code" href="structusb__str__desc__t.html">00382</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00383"></a><a class="code" href="structusb__str__desc__t.html#ab23ffbfabfea9cc57aec37cdb9122379">00383</a>         uint8_t <a class="code" href="structusb__str__desc__t.html#ab23ffbfabfea9cc57aec37cdb9122379">bLength</a>;
<a name="l00384"></a><a class="code" href="structusb__str__desc__t.html#afaeec55a399403b5d683d63ed7be6117">00384</a>         uint8_t <a class="code" href="structusb__str__desc__t.html#afaeec55a399403b5d683d63ed7be6117">bDescriptorType</a>;
<a name="l00385"></a>00385 } <a class="code" href="structusb__str__desc__t.html" title="A standard USB string descriptor sructure.">usb_str_desc_t</a>;
<a name="l00386"></a>00386 
<a name="l00387"></a><a class="code" href="structusb__str__lgid__desc__t.html">00387</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00388"></a><a class="code" href="structusb__str__lgid__desc__t.html#a9b1b4bea90e7ac4aac264d3a5b39a8d6">00388</a>         <a class="code" href="structusb__str__desc__t.html" title="A standard USB string descriptor sructure.">usb_str_desc_t</a> <a class="code" href="structusb__str__lgid__desc__t.html#a9b1b4bea90e7ac4aac264d3a5b39a8d6">desc</a>;
<a name="l00389"></a><a class="code" href="structusb__str__lgid__desc__t.html#aeb9b6d37605e7a462e91ae345132f371">00389</a>         le16_t <span class="keywordtype">string</span>[1];
<a name="l00390"></a>00390 } <a class="code" href="structusb__str__lgid__desc__t.html">usb_str_lgid_desc_t</a>;
<a name="l00391"></a>00391 
<a name="l00392"></a>00392 <a class="code" href="group__udi__cdc__group__desc.html#gabe317a1520896eaf568afab27dc71540">COMPILER_PACK_RESET</a>();
<a name="l00393"></a>00393 
<a name="l00395"></a>00395 
<a name="l00396"></a>00396 <span class="preprocessor">#endif </span><span class="comment">/* _USB_PROTOCOL_H_ */</span>
</pre></div></div>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>



<hr class="footer"/><address class="footer"><small>
Generated on Mon Dec 19 2011 21:04:51 for OpenShoe by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>
